package model;

import java.util.HashSet;
import java.util.Set;

import org.uqbar.commons.model.UserException;
import org.uqbar.commons.utils.Observable;

import ar.edu.utn.frba.dds.aterrizar.usuarios.Estandar;
import ar.edu.utn.frba.dds.aterrizar.usuarios.HomeUsuarios;
import ar.edu.utn.frba.dds.aterrizar.usuarios.NoPaga;
import ar.edu.utn.frba.dds.aterrizar.usuarios.Usuario;
import ar.edu.utn.frba.dds.aterrizar.usuarios.VIP;

@Observable
public class LoginModel {
	
	private Set<String> usuarios = new HashSet<String>();
	private String usuarioSeleccionado;
	private String password;
	
	public LoginModel() {
		new Usuario("Pepo", new Estandar(),"Pepon","1.232.321");
		new Usuario("Brian", new VIP(), "Roullet", "9999999");
		new Usuario("Diego", new NoPaga(), "Charra", "555555");
		for(Usuario usuario : HomeUsuarios.getInstance().getUsuariosRegistrados()) {
			usuario.setPassword(usuario.getNombre());
		}
	}
	
	public boolean loguear() {
		if(usuarioSeleccionado == null) throw new UserException("Primero debe seleccionar un usuario");
		if(password == null) throw new UserException("Ingrese password");
		Usuario usuario = HomeUsuarios.getInstance().buscarUsuario(usuarioSeleccionado);
		return usuario.getPassword().toUpperCase().equals(password.toUpperCase());
	}

	public Set<String> getUsuarios() {
		Set<Usuario> registrados = HomeUsuarios.getInstance().getUsuariosRegistrados();
		for(Usuario usuario : registrados) {
			String nombre = usuario.getNombre();
			String apellido = usuario.getApellido();
			String tipo = usuario.getTipoDeUsuario().getClass().getSimpleName();
			usuarios.add(nombre + " " + apellido + " (" + tipo + ")");
		}
		return usuarios;
	}

	public void setUsuarios(Set<String> usuarios) {
		this.usuarios = usuarios;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getUsuarioSeleccionado() {
		return usuarioSeleccionado;
	}

	public void setUsuarioSeleccionado(String usuarioSeleccionado) {
		this.usuarioSeleccionado = usuarioSeleccionado;
	}

}
